package types

type GlobalAbnormalCountReq struct {
	QueryCodeList []string `json:"query_code_list"`
	ProjectId     int64    `json:"project_id"`
	StartTime     int64    `json:"start_time"`
	EndTime       int64    `json:"end_time"`
}

type GlobalAbnormalCountResItemAsync struct {
	CountItem GlobalAbnormalCountResItem
	Err       error
}

type GlobalAbnormalCountResItem struct {
	Code      string                                `json:"code"`       // 统计的指标
	CountData []GlobalAbnormalCountResItemCountData `json:"count_data"` // 统计的指标值
}

type GlobalAbnormalCountResItemCountData struct {
	ProjectId uint64 `json:"project_id"` // 有些统计项 需要区分项目
	Number    int64  `json:"number"`     // 统计值
}

type GlobalAbnormalCountRes []GlobalAbnormalCountResItem

type PersonalTaskCountReq struct {
	QueryCodeList []string `json:"query_code_list"`
	ProjectId     int64    `json:"project_id"`
	StartTime     int64    `json:"start_time"`
	EndTime       int64    `json:"end_time"`
	Today         int      `json:"today"`
}

type PersonalTaskCountResItemAsync struct {
	CountItem PersonalTaskCountResItem
	Err       error
}

type PersonalTaskCountResItem struct {
	Code      string                              `json:"code"`       // 统计的指标
	CountData []PersonalTaskCountResItemCountData `json:"count_data"` // 统计的指标值
}

type PersonalTaskCountResItemCountData struct {
	ProjectId uint64 `json:"project_id"` // 有些统计项 需要区分项目
	Number    int64  `json:"number"`     // 统计值
}

type PersonalTaskCountRes []PersonalTaskCountResItem

type StepCategoryTaskCountReq struct {
	ProjectId int64 `json:"project_id"`
	StartTime int64 `json:"start_time"`
	EndTime   int64 `json:"end_time"`
	Today     int   `json:"today"`
}

type StepCategoryTaskCountResItem struct {
	StepCategoryIdList []int64  `json:"step_category_id_list"` // 分类id
	StepCategoryName   string   `json:"step_category_name"`    // 分类名称
	ModuleCodeList     []string `json:"module_code_list"`      // 模块code list

	DeliveryEpisodeIdList       []int64 `json:"-"` // 剧集id map
	ShouldDeliveryEpisodeIdList []int64 `json:"-"` // 剧集id map

	DeliveryEpisodeIdMap       map[int64]bool `json:"-"` // 剧集id map
	ShouldDeliveryEpisodeIdMap map[int64]bool `json:"-"` // 剧集id map

	WaitDone      int64 `json:"wait_done"`       // 待完成未完成
	WaitDoneTotal int64 `json:"wait_done_total"` // 待完成总数

	WaitDelivery              int64 `json:"wait_delivery"`                // 待交付
	WaitDeliveryTotal         int64 `json:"wait_delivery_total"`          // 待交付总数
	WaitDeliveryDeliveryFrame int64 `json:"wait_delivery_delivery_frame"` // 待交付交付帧数

	AbnormalTotal    int64  `json:"abnormal_total"`     // 异常总数
	AbnormalUnHandle int64  `json:"abnormal_un_handle"` // 异常未处理
	Unit             string `json:"unit"`               // 统计单位

	AbnormalTotalTaskIdMap    map[int64]bool // 异常任务id
	AbnormalUnHandleTaskIdMap map[int64]bool // 异常未处理任务id
}

type TaskCountQueryCount struct {
	Id    int64 `json:"id"`
	Done  int64 `json:"done"`
	Total int64 `json:"total"`
}

type GetPlanDepartmentCount struct {
	Id     int64 `json:"id"`
	Number int64 `json:"number"`
}

type GetTaskPlanDepartmentCountItem struct {
	Id       int64  `json:"id"`
	StepType string `json:"step_type"`
	Count    int64  `json:"count"`
}

type TaskStepPlanDoneCount struct {
	StepType string `json:"step_type"`
	Count    int64  `json:"count"`
}

type GetTaskPlanDepartmentCount struct {
	Id                int64 `json:"id"`
	Total             int64 `json:"total"`
	TotalStep         int64 `json:"total_step"`
	TotalStandardTodo int64 `json:"total_standard_todo"`
	TotalOther        int64 `json:"total_other"`

	Done             int64 `json:"done"`
	DoneStep         int64 `json:"done_step"`
	DoneStandardTodo int64 `json:"done_standard_todo"`
	DoneOther        int64 `json:"done_other"`
}

type TaskCountDataItem struct {
	Done       int64 `json:"done"`
	ActualDone int64 `json:"actual_done"`
	Total      int64 `json:"total"`
	Abnormal   int64 `json:"abnormal"`
}

type TaskTypeCountQueryCount struct {
	Id    int64  `json:"id"`
	Done  int64  `json:"done"`
	Total int64  `json:"total"`
	Type  string `json:"type"`
}

type GroupTaskCountReq struct {
	ProjectId              int64   `json:"project_id"`
	DepartmentId           int64   `json:"department_id"`              // 部门id
	TodoStepCategoryIdList []int64 `json:"todo_step_category_id_list"` // 环节id
	StartTime              int64   `json:"start_time"`
	EndTime                int64   `json:"end_time"`
	Today                  int     `json:"today"`
}

type GroupTaskCountPlanDoneResItem struct {
	TaskPlanTotal             int64 `json:"task_plan_total"`               // 计划完成任务总数
	TaskPlanTotalStep         int64 `json:"task_plan_total_step"`          // 计划完成制作任务总数
	TaskPlanTotalStandardTodo int64 `json:"task_plan_total_standard_todo"` // 计划完成标准任务总数
	//TaskPlanTotalOther        int64 `json:"task_plan_total_other"`         // 计划完成其他任务总数

	TaskPlanDone             int64 `json:"task_plan_done"`               // 计划完成任务完成总数
	TaskPlanDoneStep         int64 `json:"task_plan_done_step"`          // 计划完成制作任务完成数
	TaskPlanDoneStandardTodo int64 `json:"task_plan_done_standard_todo"` // 计划完成标准任务完成数
	//TaskPlanDoneOther        int64 `json:"task_plan_done_other"`         // 计划完成其他任务完成数

	TaskActuallyDone             int64 `json:"task_actually_done"`               // 计划实际完成任务完成总数
	TaskActuallyDoneStep         int64 `json:"task_actually_done_step"`          // 计划实际完成制作任务完成数
	TaskActuallyDoneStandardTodo int64 `json:"task_actually_done_standard_todo"` // 计划实际完成标准任务完成数
	//TaskActuallyDoneOther        int64 `json:"task_actually_done_other"`         // 计划实际完成其他任务完成数

}

type GroupTaskCountDeliveryResItem struct {
	DeliveryTotal    int64 `json:"delivery_total"`    //  交付总数
	DeliveryDone     int64 `json:"delivery_done"`     // 交付已完成
	DeliveryActually int64 `json:"delivery_actually"` // 实际交付总数
}

type GroupTaskCountUpstreamDeliveryResItem struct {
	UpstreamDeliveryDetail       []UpstreamDeliveryDetail `json:"upstream_delivery_detail"`
	UpstreamDeliveryNameMap      map[string]int           `json:"-"`
	UpstreamStepCategoryIdList   []int64                  `json:"upstream_step_category_id_list"`
	DownstreamStepCategoryIdList []int64                  `json:"downstream_step_category_id_list"`

	UpstreamStepCategoryIdMap   map[int64]bool `json:"-"`
	DownstreamStepCategoryIdMap map[int64]bool `json:"-"`

	DepartmentStepCategoryIdList []int64 `json:"department_step_category_id_list"`
}

type GroupTaskCountResItem struct {
	DepartmentId   int64  `json:"department_id"`   // 部门id
	DepartmentName string `json:"department_name"` // 部门名称

	GroupTaskCountPlanDoneResItem
	GroupTaskCountDeliveryResItem

	GroupTaskCountUpstreamDeliveryResItem

	GetAbnormalDepartmentCountRes
}

type GroupUpstreamDeliveryCountResItem struct {
	DepartmentId   int64  `json:"department_id"`   // 部门id
	DepartmentName string `json:"department_name"` // 部门名称
	GroupTaskCountUpstreamDeliveryResItem
}

type GroupPlanDoneCountResItem struct {
	DepartmentId   int64  `json:"department_id"`   // 部门id
	DepartmentName string `json:"department_name"` // 部门名称
	GroupTaskCountPlanDoneResItem
}

type GroupDeliveryCountResItem struct {
	DepartmentId   int64  `json:"department_id"`   // 部门id
	DepartmentName string `json:"department_name"` // 部门名称
	GroupTaskCountDeliveryResItem
}

type UpstreamDeliveryDetail struct {
	StepCategoryIdList []int64 `json:"step_category_id_list"` // 环节id
	StepCategoryName   string  `json:"step_category_name"`    // 环节名称
	DeliveryDone       int64   `json:"delivery_done"`         // 交付数量完成数
	DeliveryTotal      int64   `json:"delivery_total"`        // 交付数量总数
	DeliveryActually   int64   `json:"delivery_actually"`     // 实际交付数量
	DelayDeliveryTotal int64   `json:"delay_delivery_total"`  // 延期交付数量
}

type GetAbnormalDepartmentCountRes struct {
	AbnormalAddedTask               int64 `json:"abnormal_added_task"`                  // 新增任务
	AbnormalWaitHandleTaskWorkOrder int64 `json:"abnormal_wait_handle_task_work_order"` // 待处理工单
	AbnormalDelayTask               int64 `json:"abnormal_delay_task"`                  // 延期任务
}

type EpisodePlanSealCountRes struct {
	Plan []int64 `json:"plan"`
	Done []int64 `json:"done"`
}

type GetAbnormalTaskCountItem struct {
	StepCategoryId int64 `json:"step_category_id"`
	TaskId         int64 `json:"task_id"`
}

type GetAbnormalTaskCountResItem struct {
	StepCategoryId         int64
	AbnormalTotalTaskId    []int64
	AbnormalUnHandleTaskId []int64
}

type GroupAbnormalAddedTaskResItem struct {
	DepartmentId      int64  `json:"department_id"`       // 部门id
	DepartmentName    string `json:"department_name"`     // 部门名称
	AbnormalAddedTask int64  `json:"abnormal_added_task"` // 新增任务
}

type GroupAbnormalWaitHandleTaskWorkOrderResItem struct {
	DepartmentId                    int64  `json:"department_id"`       // 部门id
	DepartmentName                  string `json:"department_name"`     // 部门名称
	AbnormalWaitHandleTaskWorkOrder int64  `json:"abnormal_added_task"` // 新增任务
}

type GroupAbnormalDelayTaskResItem struct {
	DepartmentId      int64  `json:"department_id"`       // 部门id
	DepartmentName    string `json:"department_name"`     // 部门名称
	AbnormalDelayTask int64  `json:"abnormal_delay_task"` // 延期任务
}

type EpisodePlanItem struct {
	EpisodeId int64 `json:"episode_id"`
	StartTime int64 `json:"start_time"`
	EndTime   int64 `json:"end_time"`
}

type EpisodeDetailReq struct {
	ProjectId int64 `json:"project_id"` // 项目id
	StartTime int64 `json:"start_time"` // 开始时间
	EndTime   int64 `json:"end_time"`   // 结束时间
}

type EpisodeDetailRes []EpisodeDetailResItem

type EpisodeDetailResItem struct {
	EpisodeId           int64  `json:"episode_id"`             // 剧集id
	EpisodeName         string `json:"episode_name"`           // 剧集名称
	EpisodeCustomGrade  string `json:"episode_custom_grade"`   // 剧集等级
	EpisodePlanSealTime int64  `json:"episode_plan_seal_time"` // 计划封板日期
	EpisodeSealTime     int64  `json:"episode_seal_time"`      // 封板日期
}

type StepCategoryInprogressEpisodeListReq struct {
	ProjectId          int64   `json:"project_id"`            // 项目id
	StartTime          int64   `json:"start_time"`            // 开始时间
	EndTime            int64   `json:"end_time"`              // 结束时间
	StepCategoryIdList []int64 `json:"step_category_id_list"` // 环节id
}

type StepCategoryInprogressEpisodeListRes []StepCategoryInprogressEpisodeListResItem

type StepCategoryInprogressEpisodeListResItem struct {
	EpisodeId                int64                         `json:"episode_id"`                            // 剧集id
	EpisodeName              string                        `json:"episode_name"`                          // 剧集名称
	EpisodeCustomGrade       string                        `json:"episode_custom_grade"`                  // 剧集等级
	EntityTotal              int64                         `json:"entity_total"`                          // 计划内实体总数
	TaskTotal                int64                         `json:"task_total"`                            // 计划内任务总数
	TaskDone                 int64                         `json:"task_done"`                             // 计划内交付数量
	MinPlanStartTime         int64                         `json:"min_plan_start_time"`                   // 最早的计划开始时间
	MaxPlanEndTime           int64                         `json:"max_plan_end_time"`                     // 最晚的计划完成时间
	AssetTaskCountDetailList []EpisodeAssetTaskCountDetail `json:"asset_task_count_detail_list" gorm:"-"` // 资产线类型任务统计
	ReviewMeetingName        string                        `json:"review_meeting_name"`                   // 审核会议名称
	ReviewOptionsId          int64                         `json:"review_options_id"`                     // 审核配置id

}

type EpisodeTaskCountDetail struct {
	EpisodeId    int64 `json:"episode_id"`
	Total        int64 `json:"total"`
	Done         int64 `json:"done"`
	EntityNumber int64 `json:"entity_number"`
}

type EpisodeAssetTaskCountDetail struct {
	EpisodeId    int64  `json:"episode_id"`
	CategoryName string `json:"category_name"`
	Total        int64  `json:"total"`
	Done         int64  `json:"done"`
	EntityNumber int64  `json:"entity_number"`
}

type EpisodeSealShowListReq struct {
	ProjectId int64 `json:"project_id"` // 项目id
	StartTime int64 `json:"start_time"` // 开始时间
	EndTime   int64 `json:"end_time"`   // 结束时间
}

type EpisodeSealShowListRes map[string]*[]EpisodeSealShowListResItem

type EpisodeSealShowListResItem struct {
	EpisodeId           int64  `json:"episode_id"`
	EpisodeName         string `json:"episode_name"`
	EpisodePlanSealTime int64  `json:"episode_plan_seal_time"`
	EpisodePlanShowTime int64  `json:"episode_plan_show_time"`
}

type MakingOverviewReq struct {
	ProjectId          int64   `json:"project_id"`            // 项目id
	StartTime          int64   `json:"start_time"`            // 开始时间
	EndTime            int64   `json:"end_time"`              // 结束时间
	StepCategoryIdList []int64 `json:"step_category_id_list"` // 环节id

}
type MakingOverviewReviewDetailEpisode struct {
	EpisodeId    int64  `json:"episode_id"`    // 剧集id
	EpisodeName  string `json:"episode_name"`  // 剧集名称
	EntityNumber int64  `json:"entity_number"` // 镜头总数
}
type MakingOverviewReviewDetail struct {
	Name          string                              `json:"name"`           // 审核名称
	ChangePercent int64                               `json:"change_percent"` // 修改百分比
	EpisodeList   []MakingOverviewReviewDetailEpisode `json:"episode_list"`   // 剧集情况
}

type AssetMakeCategoryNumberDetail struct {
	Name   string `json:"name"`   // 分类名称
	Number int64  `json:"number"` // 分类数量
}
type MakingOverviewRes struct {
	MakeEntityTotal   int64                        `json:"make_entity_total"`   // 制作镜头总数
	ReviewDetailList  []MakingOverviewReviewDetail `json:"review_detail_list"`  // 审核情况
	MakeEpisodeNumber int64                        `json:"make_episode_number"` // 制作剧集数量

	AssetMakeCategoryNumberList []AssetMakeCategoryNumberDetail `json:"asset_make_category_number_list"`
}

type ReviewTagNameEpisodeList struct {
	EpisodeId       int64  `json:"episode_id"`
	ReviewTagName   string `json:"review_tag_name"`
	ReviewOptionsId int64  `json:"review_options_id"`
}

type EpisodeEntityCount struct {
	EpisodeId    int64 `json:"episode_id"`
	EntityNumber int64 `json:"entity_number"`
}
